package managedBeans;

import java.io.Serializable;
import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import modeloProducto.Producto;
import modeloProducto.ProductoEjbRemote;

/**
 * ManagedBean utilizado para.
 *
 * @author Ronald Carroza Riquelme.
 */
@ManagedBean
@SessionScoped
public class ProductoMB implements Serializable {
    /**
     * pEjb pertenece al Bean que permite todas las operaciones 
     * a la base de datos.
     */
    @EJB(name = "ProductoEjbRemote", mappedName = "ProductoEjbRemote")
    ProductoEjbRemote pEjb;

    /**
     * TODO doc information expected for mantProducto attribute.
     */
    private Producto mantProducto;
    /**
     * Listado de tipo producto para mostrar en jsf y luego poder agregar a detalle..
     */
    private ArrayList<Producto> listado;

    /**
     * Metodo que se ejecuta al inicio de la aplicacion 
     * e instancia un nuevo producto junto con obtener la lista de los 
     * productos existentes desde la base de datos.
     *
     */
    @PostConstruct
    public void init() {
        mantProducto = new Producto();
        listado = pEjb.getListProducto();
    }
    

    /**
     * Permite obtener el valor del atributo mantProducto.
     * @return el valor del atributo mantProducto.
     */
    public Producto getMantProducto() {
        return mantProducto;
    }

    /**
     * Permite cambiar el valor del atributo mantProducto.
     *
     * @param mantProducto nuevo valor para el atributo mantProducto.
     */
    public void setMantProducto(Producto mantProducto) {
        this.mantProducto = mantProducto;
    }

    /**
     * Permite obtener el valor del atributo listado.
     * @return el valor del atributo listado.
     */
    public ArrayList<Producto> getListado() {
        return listado;
    }

    /**
     * Permite cambiar el valor del atributo listado.
     *
     * @param listado nuevo valor para el atributo listado.
     */
    public void setListado(ArrayList<Producto> listado) {
        this.listado = listado;
    }
}
